Mass-storage devices and mass-storage systems have evolved, during the past 60 years, as rapidly and profoundly, if not more rapidly and profoundly, than computer processors and electronic memories. Initially, mass-storage devices were either incorporated within, or directly connected to, computer systems, for exclusive access by the computer systems in which they were included. Later, dual-ported mass-storage devices that could support connections to two or more computer systems were developed, in order to provide for more reliable data storage within multi-computer systems. Techniques for concurrent access to mass-storage devices by multiple computers were developed, as well as additional techniques for using redundantly stored data to increase the reliability and fault-tolerance of mass-storage devices. With the advent of computer networking, computer systems became capable of accessing remote mass-storage devices via servers that managed the mass-storage devices on behalf of accessing host computers. More recently, and continuing to the present time, autonomous mass-storage systems have been developed to allow computers to access the mass-storage systems directly through network communications. These autonomous mass-storage systems often feature redundant controllers and redundant internal communications paths, and store data redundantly according to one or more of the various RAID schemes to provide highly available and highly fault-tolerant data storage. Presently, there is a wide range of available mass-storage systems for use in computer systems and networked computer environments.
Mass-storage systems generally provide a logical-device-based data-storage interface to accessing host computers. Host computers create, store data to, and retrieve data from, logical devices. Each logical device comprises a set of consecutively-addressable data-storage units. For example, a logical device may be considered, by the host computer, as comprising a linear array of data blocks that include either a fixed or a variable number of bytes, words, or another smallest-granularity unit of data storage. Mass-storage systems also generally provide various management and administrative operations to host computers, including a snapshot operation. A snapshot operation generates a logical copy of the contents of a logical device at a fixed point in time. The logical copy is contained in a snapshot logical device. Once a snapshot operation has been directed to a logical device, the logical device may continue to be accessed by host computers and modified by WRITE operations. Should, at a future point in time, a host computer wish to restore the logical device to the data state at the point in time at which a snapshot operation was directed to the logical device, the host computer can direct a RESTORE command to the logical device, specifying the snapshot logical device that corresponds to the point in time or the time point. Snapshot operations can be issued, one after another, at fixed points in time in order to provide a set of potential restore points to allow a host computer to restore a logical device to the data state that the logical device had at any of the restore points represented by snapshot logical devices generated by the snapshot operations.
The set of snapshots, or snapshot logical devices, generated for a source logical device, along with the source logical device, together comprise a snapshot tree. A host computer can restore the source logical device to the data state that the source logical device had at any in point in time represented by a snapshot in the snapshot tree. In general, the snapshots in the snapshot tree are not full copies of the source logical device, but contain only differential data sufficient to restore the logical device to the data state at the time represented by the snapshot. The snapshots within the snapshot tree are generally interdependent, and often, during a restore operation, a number of different snapshots within the snapshot tree need to be accessed in order to restore the source logical device to a previous data state. The entire snapshot tree is therefore a rather complex set of interdependent, somewhat special types of logical devices. While current mass-storage systems provide snapshot and restore operations, current mass-storage systems do not provide a convenient means for managing the entire set of source and snapshot logical devices that together compose a snapshot tree. Researchers, developers, manufacturers, vendors, and users of mass-storage systems thus recognize a need to continue to develop and provide new and improved methods and systems for managing snapshot trees within a complex mass-storage system.